General-purpose circuit simulators are powerful tools used in electrical circuit designs to verify circuit design and to simulate circuit behavior. For instance, in the integrated circuit (IC) design, the high costs of manufacturing an IC makes it very essential to verify the circuit behavior prior to manufacturing. Enormous cost savings are achieved by simulating different variations of a circuit's component values prior to manufacturing.
Circuit simulators such as Simulation Program with Integrated Circuits (SPICE) are widely used to verify electrical circuit design. These programs, however, simulate the entire circuit as a single matrix. Simulating the entire circuit requires a significant amount of processing time as the matrix becomes larger even though the matrices representing electrical circuits are very sparse. To reduce processing time, another group of simulators with less accurate but more efficient algorithms have been designed. These simulators, referred to as timing simulators, use simplified device models and equation formulation techniques. Many of these simulators compute circuit delays by simulating the response of the circuit to a given set of inputs.
In the past, timing simulators have flatly partitioned the entire circuit into small groups of transistors, so that they can solve a set of smaller matrices instead of one large matrix. Since the time necessary to solve a matrix grows super-linearly with respect to the number of rows and columns, solving several small matrices can be faster than solving a single large matrix. Also, partitioning the circuit allows the simulator to take advantage of latency and to employ multi-rate algorithms in solving the system equations. Flattening a circuit, however, can significantly increase memory consumption. As the size of modern IC and board level circuits grow, the impact of memory consumption becomes more significant. In addition, timing simulators are less accurate than simulators such as SPICE. Hence, there is a need in the art for a fast and highly-accurate simulator that achieves higher speed without significantly increasing memory consumption.